home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-08-31 | 38.2 KB | 1,095 lines | [TEXT/CWIE] |
- ========================================================================
- Metrowerks MSL 4.0.10 Pro4 Final Candidate 2 Release Notes
- ========================================================================
-
- Version: Metrowerks CodeWarrior 4.0.9 MSL Pro4 FC2
- Date: August 26, 1998
- Authors: Vicki Scott, Michael Marcotty, Matt Fassiotto, Ron Liechty,
- Howard Hinnant
-
- ========================================================================
-
- ========================================================================
- New Features in This Version
- ========================================================================
-
- * __MSL__ identifier is 0x4010. This release is known as the Pro4
- Final Candidate 2. This number identifies MSL as Pro 4 (major
- release number), Patch 0 (minor release number), build 10. We've
- had a few requests for making this number look more like it sounds,
- so although it is increasing with each build, it isn't necessarily
- monatomically increasing (i.e., build 10 looks like the decimal
- number 10 instead of the hexadecimal value of "a").
-
- * Member templates have been implemented in the library. This has
- been validated with a standard test suite, but has not been
- exercised in the many ways that application programs devise.
- If you are experiencing problems with member templates and you
- suspect the library, you can disable this feature in mcompile.h
- (comment out the line #define MSIPL_MEMBER_TEMPLATE). Refer to
- the notes below on functions that are still not working with
- member templates.
-
- * __MSL_FIX_ITERATORS__ has been removed! The compiler now fixes
- partial template specializations (be sure and read the compiler
- release notes for restrictions, however). This means you no longer
- need this hack in your code anymore. See notes below for how to
- remove this from your code - there is a trick that you have to be
- aware of.
-
- * <locale> has been completely rewritten to improve speed and size
- of compilation. See notes below for variances from the Standard.
-
- * The slist class has been fixed.
-
- * The hash class functions are available, but not fully supported in
- this release.
-
- * <bitset> now uses only one bit per bool instead of one byte
-
- * <algorithm> has been rewritten to fix quite a few bugs and some
- gain in performance and correctness of functions
-
- * mem_fun classes now implemented
-
- * Math functionality includes improved cross-platform support for the
- most common functions. The biggest feature in the math support
- includes the ability to call math functions through a function
- pointer in both C and C++ and on all supported platforms. See the
- notes below on math features for additional information.
-
- New functions on Intel include nan("char* tagp") and the C9X
- relational macros, isgreater,isless, etc...
-
-
- ========================================================================
- Reported Bugs Fixed in This Version
- ========================================================================
-
- * MW00042 (Mac)
- The definition of O_RDWR in the ANSI header fcntl.h is now defined as
- 0x01, instead of 0x0.
-
- * MW00225 (Mac)
- Fixes the inadvertent release of a shared resource prior to when it
- should be released.
-
- * MW00288 (x86)
- Fixes a problem with exit code on Windows' platforms.
-
- * MW00294 (Mac)
- Fixes a problem following aliases
-
- * MW00427
- Fixes specializations in valarray
-
- * MW00445 (Mac, x86 still needs to be fixed)
- Fixes a problem with trying to seek past EOF
-
- * MW00456 (Mac)
- Fixes a problem with renaming directories
-
- * MW01597 (x86)
- Fixes a problem with renaming "open" to "_open"
-
- * MW01813 (Mac/PPC)
- Fixes a one-off bug in strstr when null is part of the pattern
-
- * MW02103
- MW06325
- The speed and size requirements (too slow, too big) have been fixed
- in <locale> in the C++ library. It no longer takes >64K memory nor
- half and hour to compile locimp.cpp
-
- * MW02520
- Fixes string I/O alignment in C++
-
- * MW02557
- removed the Win32 SDK header x86_prefix.h from MSL. We now
- use the one provided with the SDK.
-
- * MW02625
- Fixes a problem with memchr and __memrchr for characters > 0x80
-
- * MW02733
- Fixes a problem with state bit when fflush is called
-
- * MW02910
- Fixes character output alignment in C++
-
- * MW03236
- Fixes the search algorithm in <algorithm> to be more efficient
-
- * MW03272
- Fixes a bug in fread when a file contains fewer bytes than
- requested
-
- * MW03278 (mac)
- Fixes a cosmetic bug in SIOUX
-
- * MW03295 (mac)
- Fixes a bug in FSp_fopen with _fcreator and _ftype
-
- * MW05946
- Fixes a bug in getting memory for a error warning during
- an exception
-
- * MW06295
- Fixes bug when trying to print a long long cast to an int
-
- * MW06496
- Fixes a bug with strftime incorrectly returning zero
-
- * MW06626
- Fixes a bug in setw when temporary string is destructed
- leaving a dangling pointer
-
- * MW07009 (x86)
- Fixes a bug in WinSIOUX when passing arguments to main
-
- * MW07031
- Fixes a bug in SIOUX WASTE with data type too small for
- possible values
-
- * unix headers stat.h/fcntl.h/unistd.h were not including the
- correct version header file because __dest_os was not defined.
-
- * Fixed the problem with OLDROUTINENAMES define
-
- * Fixed the problem with std:: in size_t and offsetof macros
-
- * Fixed problem with POSIX definition of fdopen
-
- * Fixed open flags for win32 files to not truncate files when opening
-
- * Fixed project files for x86 to include the relative path names
-
- * Added the "sys" directory and moved stat.h to it so that x86 files
- who look for <sys\stat.h> can now find it. This is ugly, but we
- will be rearranging the directory structure in the future to
- accommodate additional platforms and will get this cleaned up at
- a later date.
-
- * Moved stroul syntax and stroud syntax files to a new folder called
- "MSL Technical Notes" and restored their contents (missing since
- Pro 1)
-
- * Fixed SIOUX project files on Mac to not include the prefix file
-
-
- ==============================================================
- Math bugs fixed in this release
- ==============================================================
-
- * MW01298
- __float_min etc. have been removed from float.c. Standard
- constants such as FLT_MIN,FLT_MAX are now translated by the
- compiler at compile time.
-
- * MW02445
- * MW01261
- precision of printing doubles was incorrect even when values
- are exact(e.g., ints). the module ansi_fpx86.obj replaces
- ansi_fp_x86.c on INTEL.
-
- * MW07091
- could not reproduce this, but the implementation of complex
- log10 was inefficient. We now multiply by a constant instead
- of a function call/divide. this should be fixed.
-
- * fmin/fmax/fdim
- now are strictly compliant with C9X
-
- * complex abs/sqrt
- were not working for large values or values near 0.
- using hypot instead of sqrt(x*x + y*y).
-
- * MW07513
- long double math functions do not work on PPC. The problem
- was that prototypes instead of macros sere in cmath. We do
- not support the 128 bit long double data type on the PPC,
- so the return values of these functions will not properly
- coerce into IEEE 64 bit doubles.
-
- * MW02614/MW02687/MW01266
- on 68K for 8 byte doubles, functions pointers to
- ANSI math functions now work.
-
-
- * MW02914/MW06751
- math.h/fp.h conflicts on 68K when including HyperXcmd.h
- (In general, math.h and fp.h conflict on 68K). This is
- fixed as best as it can be. There are two known minor
- problems remaining. If including cmath first no problems
- exist. If including fp.h first then there are two
- known incompatibilities:
-
- a. When the C++ compiler is on, you cannot call std::foo
- directly in the including program(foo is any standard
- math function).
-
- b. On 68K only, you cannot assign the address of one of
- the math functions to a double function pointer. The
- reason for this is that the prototypes in fp.h are
- picked up first and are all of type long double.
- A work around to this is to turn on "relaxed pointer
- types" in the C++ Language pref panel.
-
- See MSL tech notes for additional information on this issue
-
- ==============================================================
- The following user reported bugs were fixed in Pro3, but were
- not mentioned in the Pro3 Release Notes:
- ==============================================================
-
- * MW01251
- fabs crashes under CFM-68K
-
- * MW00102
- SIOUXSetTitle
-
- * MW00222
- gratuitous warning messages
-
- * MW00319
- memory leaks in streams
-
- * MW00376
- exception safe uninitialized_fill
-
- * MW00427
- MW02709
- MW02789
- brain dead valarray
-
- * MW00451
- string exposed refcounted implementation
-
- * MW00593
- mutable bug in auto_ptr
-
- * MW00622
- sputbackc
-
- * MW00767
- string::operator[] fixed
-
- * MW00805
- exception safety of entire lib, esp. vector::op=
-
- * MW00827
- explicit facet constructor
-
- * MW01254
- problem with vector.h --> insert
-
- * MW01279
- what() in exception is redeclared
-
- * MW01300
- mode_t defined twice
-
- * MW01321
- fseek and DOS line endings
-
- * MW02075
- problem with first arg to multimap being const
-
- * MW02345
- better <limits>
-
- * MW02522
- destructor problems for const objects in vector
-
- * MW02531
- string::find
-
- * MW02729
- headers don't pass check syntax
-
- * MW02783
- isnan macro bug
-
- * MW02848
- bug in hash_table::iterator::operator =()
-
- * MW02948
- abs added to cmath
-
- * MW02949
- missing size() in valarray
-
- * MW02964
- missing wchar functions
-
- * MW03156
- poor bad_alloc design
-
- * MW03455
- missing operator-> on iterators
-
- * MW05605
- incorrect complex::atan2
-
- * MW05846
- printing \r
-
- * MW05968
- problem in map.h trying to access deallocated memory
-
- * MW06626
- a locale problem
-
-
- ========================================================================
- Known Bugs and Incompatibilities
- ========================================================================
-
- * multibyte routines not implemented
-
- * wide character support in C++ is unsupported in this release
-
- * MW02521 (mac)
- Conflict with order of includes for Types.h and mcompile.h
-
- * MW02761 (x86)
- Problem with _access if path is a directory
-
- * MW03025 (mac)
- SIOUX WASTE project file needs addition settings to build optimally
-
-
- * MW03454/MW05701
- strtod/sscanf produce results off by a factor of 10
- on only 68K. This only occurs when requesting more
- digits than are guaranteed by the given precision.
- (17 for double, 21 for long double. using a format
- specifier such as %20.18e for a double will produce
- this error).
-
- * MW07337
- feature not yet added. standard api's atof() and sscanf do
- not yet implement the C9X extension which requires these
- to recognize the strings NAN and INF as input values.
- we do however have the nan("char tagp") function available
- cross platform .
-
- * signbit(1.0) returns 1 on 68K it should return 0.
- * nan("1234")=nan("6789") on PPC. Will be reported to Apple.
-
-
- ========================================================================
- Additional Notes
- ========================================================================
-
- Disclaimer:
-
- This library represents a major step forward in providing fully Standard
- compliant C and C++ libraries. We strongly desire to be responsive to
- users' requests and needs; however, our position is that we uphold and
- implement the Standards behavior in both the C and C++ libraries. If a
- behavior was provided by MSL but goes against the Standard, we reserve
- the right to modify the behavior to comply fully with the Standard. If,
- however, a behavior is unspecified or not specifically forbidden by the
- Standard, we will continue to support it in the library. We reserve the
- right to use our discretion in implementing non-standard and
- non-specified C and C++ library behavior.
-
- ===================================================================
- * C++ Library Update
- ===================================================================
-
-
- General Comments
- ----------------
-
- The battle with overly used inline continues. Much of the library has
- been fixed in this respect, but there is still a ways to go.
-
- Fixing the implicit conversion warnings continues. Much progress
- has been made, but there is still more work to do.
-
- Hash Functions
- --------------
-
- This section of the library remains experimental at this point.
- Hash containers are for thrill seekers only, but please report any
- discrepancies or bugs you find.
-
- Member Templates
- ----------------
-
- This library now supports member templates in a limited way. The
- advantage to using member templates in the library is that you now
- have the ability to provide your own allocator. However, a few
- functions still will not have member template support in this
- release:
-
- * auto_ptr You cannot convert auto_ptr<X> to auto_ptr<Y>
- * bitset You cannot convert between bitset and
- basic_string<wchar>
-
- Please refer to the compiler notes for the implementation of your own
- member templates. The member template definition for Pro4 must appear
- in the class declaration, but it will only be inlined if the inline
- keyword appears with the member template definition.
-
- <algorithm>
- -----------
-
- The implementation of many methods has been simplified without
- changing the actual algorithms used. Inline depth has been reduced,
- and readability increased.
-
- Several methods used operator!= on their template parameters. This bug
- has been corrected to use operator== instead. Affected methods include:
- find, search, search_n, remove_copy and unique_copy.
-
- An algorithmic bug was fixed in find_end.
-
- Return type of generate_n changed from OutputIterator to void in
- compliance with the standard.
-
- reverse algorithm changed to that suggested by the standard.
-
- Added a random access iterator specialization to partition.
-
- Added exception safety to stable_partition.
-
- Rewrote sort to simplify and achieve a 10% to 15% speed increase.
-
- Rewrote stable_sort. It now is exception safe and gets the right
- answer.
-
- Rewrote the heap functions for a modest performance improvement.
-
- <bitset>
- --------
-
- Rewrote class to only use 1 bit per bool, as opposed to 1 byte as
- implemented previously.
-
- <complex>
- ---------
-
- The multiply and divide operators will now propagate infinities in the
- spirit of the C9X draft standard. Also, in the spirit of C9X, the
- simpler functions for multiply and divide can be used by #defining
- _MSL_CX_LIMITED_RANGE and recompiling the C++ lib.
-
- Attention has been paid to have complex behave better when T is a
- user-supplied class rather than float, double and long double. In
- some places, specializations have been implemented so that efficiencies
- are not lost when T is a built-in floating point however.
-
- <fstream>
- ---------
-
- Minor changes in the construction of the fstream classes which removes
- duplicated work, and eliminates a memory leak.
-
- <functional>
- ------------
-
- Simplified implementation of the arithmetic, comparison and logical
- operators to increase readability.
-
- Rewrote mem_fun classes and functions.
-
- <ios>
- -----
-
- Altered ios_base in such a way that its default constructor does not
- touch any memory. This is key in getting the standard streams (cin,
- cout, etc.) to be functional before and after main, and at the same
- time, not leak memory.
-
- Modified the default constructor of basic_ios for the same reasons as
- mentioned above for ios_base.
-
- Added a _SaveFlags class that saves the flags of a ios_base. This is
- used in <locale> to temporarily change the flags of a stream in an
- exception safe manner.
-
- <iostream>
- ----------
-
- Put the static ios_base::Init object back in this header (it was
- removed from here in Pro3). It was moved out to help stop a memory leak
- associated with the standard streams. The stream classes have been
- modified now to not leak, even with the Init object back in this
- header. Having the Init object in this header is key to getting the
- standard streams to be functional before and after main.
-
- <istream>
- ---------
-
- Removed #include <extmath.h>. It was not needed, and was causing a
- conflict with assert.
-
- A default constructor was added to aid in the construction of the
- standard streams in a non-leaking manner.
-
- Corrected the basic_istream constructor which takes a streambuf
- pointer. This not only made the class more standard, but corrected a
- problem with user-defined classes derived from istream.
-
- basic_iostream constructor modified so that ios_base::init() is called
- only once. This stops a memory leak.
-
- <iterator>
- ----------
-
- Added a standard partial specialization to iterator_traits:
- template <class T> struct iterator_traits <const T*>
-
- Added the macro #define __MSL_FIX_ITERATORS__(myType) for when
- MSIPL_PARTIAL_SPECIALIZATION is defined (partial template
- specialization support). This macro is meant to define away code
- which was previously needed to work around lack of partial template
- specialization support. Unfortunately the old __MSL_FIX_ITERATORS__
- macro did not include a trailing ';', thus forcing users to add one.
- Now when MSIPL_PARTIAL_SPECIALIZATION is turned on, the trailing ';'
- that users had to add will still be there, possibly in a place that
- the compiler doesn't appreciate. Such ';' must be manually deleted
- by the user at each use. The version of the __MSL_FIX_ITERATORS__
- macro that is active when MSIPL_PARTIAL_SPECIALIZATION is not defined
- has been modified to include the trailing ';'. Thus, once the user
- removes the trailing ';' from each use of the __MSL_FIX_ITERATORS__
- macro, MSIPL_PARTIAL_SPECIALIZATION can be turned on and off with
- ease. Sorry for the inconvenience.
-
- To summarize, in your code change
- __MSL_FIX_ITERATORS__(MyClass);
- to
- __MSL_FIX_ITERATORS__(MyClass)
-
- This macro will not be required for your classes with partial template
- compiler support. At the time of this writing, it is not certain if
- new compilers will be released simultaneously with this library.
-
- The distance() method has been simplified.
-
- reverse_iterator was rewritten without mutex. mutex is too expensive
- to burden such a light weight object with. reverse_iterators passed
- by value to multiple threads will maintain their integrity. However,
- the object that they refer to will have to be properly mutex'ed by the
- user. This design insures that you only pay for mutex when you need
- it.
-
- Rewrote istream_iterator for several reasons: 1. It mistakenly
- referred to cin. 2. It had a mutex object. 3. It had a bool data
- member that was unnecessary (this should be a very light weight
- object).
-
- Removed copy constructor and destructor from ostream_iterator. The
- compiler generated versions work just fine, and the result is a class
- that the compiler has an easier time inlining.
-
- Rewrote istreambuf_iterator for modest performance gains.
-
- <limits>
- --------
-
- Changed #include <wchar.h> to <cwchar>. Silly bug!
-
- Removed previous implementation which was in comments.
-
- <locale>
- --------
-
- Rewrote. The new version fixes many bugs. Most notably, the C++
- library will now compile with much less ram and cpu.
-
- There is a performance / functionality tradeoff that can be controlled
- by the user via #define flags in <mcompile.h>. The tradeoff stems
- from the fact that most of the code in <locale> lives under templated
- virtual methods. With current compiler technology, templates with
- virtual methods are completely instantiated if an instance of that
- class template is constructed. This adds up to a lot of code that is
- instantiated, but will often never be used.
-
- Metrowerks is working on both library and compiler technology to
- optimize away this problem. In the mean-time we offer some low-tech
- options to save both code size, and library compile time:
-
- The virtual key word can be easily turned on and off for each
- individual facet class in <locale>. When all facets have virtual
- methods, this is standard. Turning off the virtualness of a facet's
- methods means that you will not be able to derive from a facet and
- thus alter I/O behavior.
-
- There is a group of facets that have "punct" in their name:
- numpunct, moneypunct, and timepunct (timepunct is non-standard).
- These facets are very small (in code), but offer tremendous
- flexibility in the customization of I/O. With these classes one can
- alter the placement of commas for grouping digits (thousands
- separators), or even change what character is used. The decimal point
- character can also be modified. Even the character strings that
- represent true and false can be changed.
-
- A good performance / functionality tradeoff is to make only the
- "punct" facets virtual. This can easily be done by
- #define _ONLY_VIRTUAL_PUNCTS
- in <mcompile.h>. In fact this is the default state of the C++ libs
- that we will ship.
-
- Also in <mcompile.h> you will notice two other
- flags that are commented out:
- // #define _NO_VIRTUAL_FACETS
- // #define _CUSTOM_VIRTUAL_FACETS
-
- If you wish no facets to have virtual methods, then comment out
- _ONLY_VIRTUAL_PUNCTS, and uncomment _NO_VIRTUAL_FACETS.
-
- If you with to define precisely which facets have virtual methods then
- use the _CUSTOM_VIRTUAL_FACETS flag, and then modify <locale> at line
- 71 to specify which facets you want virtual methods turned off. The
- macro magic there ought to be clear for those wishing to travel down
- this road.
-
- For a completely standard lib (all facets have virtual methods) then
- comment out all three flags (_ONLY_VIRTUAL_PUNCTS, _NO_VIRTUAL_FACETS
- and _CUSTOM_VIRTUAL_FACETS) in <mcompile.h>.
-
- As mentioned above, a non-standard class has been added:
-
- template <class charT>
- class timepunct
- : public locale::facet
- {
- public:
- explicit timepunct(size_t refs = 0);
- const charT* weekday_name(size_t d) const;
- const charT* month_name(size_t m) const;
- const charT* am_pm(int hour) const;
- protected:
- timepunct();
- virtual const charT* do_weekday_name(size_t d) const;
- virtual const charT* do_month_name(size_t m) const;
- virtual const charT* do_am_pm(int hour) const;
- };
-
- This class can be overridden so that the standard time_put and
- time_get work with user defined character strings to represent the
- names of the months (which default to "January", "February", ...),
- the days of the week (which default to "Sunday", "Monday", ...), and
- the am/pm designator (which defaults to "am", "pm").
-
- To create your own timepunct class you must derive it from
- std::template <class charT> class _Generic_timepunct. I recommend
- that you copy the implementation for template <> class
- timepunct<char>.
-
- <mcompile.h>
- ------------
-
- In addition to the flags mentioned under locale section, the flag
- MSIPL_PARTIAL_SPECIALIZATION has been added. This flag controls
- whether or not the library is expecting the compiler to support
- partial template specialization.
-
- The flag _WIN32 has been added to the Windows platform.
-
- The macro MSIPLSTD was changed from std to ::std.
-
- <memory>
- --------
-
- get_temporary_buffer was rewritten. It used to use a preallocated
- buffer when the size of the requested memory was small enough. This
- has been changed to just use new because of concerns in a multi-
- threaded environment.
-
- A non-standard class has been added: template <class T> class
- _TempVec. This creates an array of T by using get_temporary_buffer,
- and initializes it with a user supplied value. The for reason this
- class is to facilitate the use of get_temporary_buffer in an
- exception-safe manner. This class is used in <algorithm>.
-
- There is a new auto_ptr in the Nov' 97 standard (which unfortunately
- is not public). The best public information I know of on this
- subject can be found at http://www.dejanews.com/ (search for auto_ptr).
- The main change in auto_ptr is that when the class relenquishes
- ownership of its pointer, it sets itself to null. The Dec. '96
- auto_ptr has been left in <memory>, but commented out. If you require
- the '96 behavior, then simply comment out the '97 version, and
- uncomment the '96 version.
-
- The Pro4 compiler does not support member template operators.
- Therefore the Nov. '97 auto_ptr retains its pre-member-template code
- even with member templates enabled in the lib. This will prevent
- conversions between auto_ptr<X> and auto_ptr<Y>.
-
- The '97 auto_ptr does not provide a way to assign a temporary
- (or const) auto_ptr to an existing one. We believe that this is an
- oversight in the C++ standard. Therefore we have added the following
- non-standard member to auto_ptr:
-
- auto_ptr& operator=(auto_ptr_ref r) throw();
-
-
- <new>
- -----
-
- References to DebugNew have been deleted. This does not imply a lack
- of support for this utility. Indeed, look forward to increased
- support in this area!
-
- <ostream>
- ---------
-
- A default constructor was added to aid in the construction of the
- standard streams in a non-leaking manner.
-
- Corrected the basic_istream constructor which takes a streambuf
- pointer. This not only made the class more standard, but corrected a
- problem with user-defined classes derived from istream.
-
- Formatting of char output has been corrected (now obeys width and
- justification).
-
- Output of char* has been rewritten to take advantage of the new
- locale. There is however, no change in functionality.
-
- The exception behavior of the formatted output operators has been
- modified. Unfortunately a bug still lurks here. If an exception is
- thrown, then the method should set badbit and rethrow the exception.
- Instead, badbit is left unset. This is a known bug and will be fixed
- in the next release.
-
- <string>
- --------
-
- Fixed a bug in char_traits<char>::find related to char's greater than
- 127.
-
- Removed default argument from
- iterator string::insert(iterator, char)
- per the standard.
-
- Changed string output to respect stream width and justification.
- This is non-standard behavior, but I believe that the standard is in
- error (a type-o of a single word: smaller was written when larger meant).
- If the standard is strictly interpreted, then os << string;
- should produce no output at all! (That is, for the common case of
- os.width() == 0).
-
- Fixed a potential crasher where string was overwriting the end of its
- allocated memory under certain resize calls.
-
- <strstream>
- -----------
-
- The header <strstream> defines three types that associate stream
- buffers with character array objects and assist reading and
- writing such objects.
-
- This header is deprecated, where deprecated is defined as: Normative
- for the current edition of the Standard, but not guaranteed to be
- part of the Standard in future revisions.
-
- <vector>
- --------
-
- Reduced inline depth of several iterator operations.
-
- ===================================================================
- * MSL C Source File Updates
- ===================================================================
-
- * Removed #pragma direct_destruction from the following C headers:
- console.h, csetjmp, fcntl.mac.h, fcntl.win32.h, SIOUX.h,
- stat.mac.h, stat.win32.h, unistd.mac.h, unistd.win32.h,
- unix.mac.h, unix.win32.h, utime.mac.h, utime.win32.h, utsname.h
- This will not be supported in future versions of the compiler.
-
- * C compiler flags have moved from <ansi_parms.h> to
- <ansi_prefix.xxx.h>, where xxx is mac or Win32.
-
- * ansi_files.c
- Change to allow error-free linking in case where _No_Console is
- defined. MW07076, MW06847
-
- * ansi_parms.h
- C compiler flags have moved from <ansi_parms.h> to
- <ansi_prefix.xxx.h>, where xxx is mac or Win32.
-
- * alloca.h
- Added to 68K platforms. (MacOS Support folder)
-
- * console_io.mac.c
- SIOUX.h
- SIOUX.c
- Changes to implement clrscr, for which there was a declaration
- in console.h but no code.
-
- * cinttypes
- inttypes.h
- New C9X headers added to MSL.
-
- * eof.h
- New header to define EOF. Needed to prevent circular includes
- for cstdio and cwctypes.
-
- * fcntl.mac.h
- fcntl.mac.c
- fcntl.win32.h
- Changes to the value of O_RDWR so that it has a non-zero value.
- MW00042.
-
- * fcntl.win32.h
- fnctl.win32.c
- Changes to remove #defines of open, creat, fcntl to _open,
- _creat, and _fcntl.
-
- * file_io.c
- The C Standard does not specify any action for fflush() on a
- stream opened for read only. As it stood, our implementation
- caused the buffer to be reloaded. This change turns fflush()
- into a no-op if the file is opened for read. MW02733
-
- * file_io.mac.c
- path2fss.c
- Changes to allow the renaming of directories. MW00456
-
- * file_io.mac.c
- Change to allow an alias file name to be resolved. MW00294
-
- * math.h
- This header has been brought closer to the C9X standard. On 68K,
- the standard math functions can now be called through a function
- pointer. Additionally, support has been added for the "f" and
- "l" versions of each function (which currently simply redirect
- to the double versions) on all platforms. These can be called
- through function pointers as well.
-
- float sqrtf(float);
- double sqrt(double);
- long double sqrtl(long double);
-
- In C, for the "f" and "l" functions that simply redirect to the
- double version, #defines are used to avoid overhead. However these
- functions can still be called through function pointers (with an
- overhead expense). In C++, none of the functions are implemented
- via a #define. Instead inline functions are used so that all
- functions obey namespace rules.
-
- On PPC, the "l" functions redirect to the double versions instead
- of using the Apple supplied 128-bit versions since the CodeWarrior
- long double is 64 bits.
-
- On Windows, the "f" and "l" redirection functions are not exported
- from DLL versions of the MSL C library. This is a known problem
- and will be fixed in the next release.
-
- * mem.c
- Change to allow memchr to work on the PPC for characters of
- value > 127. MW02625
-
- * scanf.c
- Modification to allow characters >= 128, e.g. fl or ä to be matched
- from format string correctly. MW06720
-
- * SIOUX.c
- Fix to insert linefeed to make the sequence \b\n work correctly.
-
- Fix the enter key work as return on input from keyboards where
- the virtual key code is 0x34 as well for keyboards with an enter
- key virtual key code of 0x4c. MW06775
-
- * string.c
- Fixed a bug with non-Standard behavior when a NULL pointer is
- passed in as the pattern - we now return str. A copy of
- string.c.faster is included as a "thrill seeker" for PPC users.
- This speeds up string handling on the PPC platform, but hasn't
- been fully validated in time for the release for desktop PPC
- platforms.
-
- * string.win32.c
- Fix a bug in strcmp and strncmp in which string compares did
- not work property when there were bytes in the range of
- 128...255 (i.e., -128...-1) signed
-
- * SIOUXWindows.c
- Removed two ReleaseResource statements that released a shared
- resource, causing possible crashes in other applications.
- MW00225
-
- * unistd.mac.c
- Fix to lseek for case where it is used to seek beyond EOF to
- extend the file. MW00445 (I don't believe lseek implemented
- on Windows yet.)
-
- * time.c
- Corrected strftime to return the correct number of characters
- written and make proper check to avoid target string overrun.
- MW06496
-
- * SIOUXGlobals.c
- SIOUXGlobals.h
- Changes to make SIOUX_WASTE work properly for files greater
- than 32k. MW07031
-
- * utime.win32.h
- Change to reintroduce #include <winsock.h> eliminated earlier.
- This include is required and has been requested again from a
- user. However, this leads to redeclaration warning messages
- during the building of the library due to the way that the
- Microsoft headers (which we can't change) have been written.
-
- * unistd.win32.h
- unistd.win32.c
- Changes to revert _lseek, _read, _write, _access, _close,
- _unlink, _rmdir, _chdir, _getcwd to lseek, read, write, access,
- close etc. while accommodating legacy code.
-
-
- ===================================================================
- * WinSIOUX
- ===================================================================
-
- The Mac SIOUX-like project is now available for Windows. This
- means that a new console window for WIN32 applications is
- available that permits saving stdout to a file, printing it from
- a menu option, and includes scroll bar. A new stationary on the
- windows platforms is included, named WinSIOUX. You will not get
- the standard DOS/NT console if you use this stationary. The
- remaining functions from SIOUX will be included in future releases
- (for example, cut and paste, selecting font, and opening/closing
- files from the menu).
-
- * clrscr() has been added to WinSIOUX. Please include WinSIOUX.h in
- your application to get this functionality.
-
- * Also added is a fixed bound on the size of the WinSIOUX buffer to
- 32768 bytes. Attempts to store bytes beyond that amount leads to
- program termination, though the user does have the opportunity to
- save the 32768 bytes that are in the buffer before terminating the
- application.
-
- * Please ensure that Winspool.lib is included in your WinSIOUX
- project.
-
- * The addition of an Edit Menu with active items of Copy, Cut
- Paste and Select All.
-
- * Keyboard shortcuts for menu items. Note that, during keyboard
- input to stdin or cin, the keyboard shortcuts are not available
- and the corresponding menu items must be used.
-
- * Caret control both through the keyboard (arrow keys) and the
- mouse.
-
- * The ability to select parts of the file with the mouse.
-
- * The ability to print just specific pages selected during the
- print dialog.
-
- * During keyboard input to stdin or cin, ctrl+D and ctrl+Z both
- serve as end-of-file markers. There is no way to clear this
- marker once it has been set.
-
- * While the program is running, Ctrl-C acts as a keyboard interrupt
- that can be handled by a user specified handler. If no handler
- is provided by the user, the default handler will terminate the
- program. When there parts of the file have been selected with
- the mouse, Ctrl-C still acts as a keyboard shortcut for Copy.
-
- * Added proper handling of argv and argc variable length argument
- lists.
-
- * The size of the console window can now be adjusted with the mouse
- in the bottom right corner and the display of long lines of text
- will be adjusted accordingly.
-
-
-
- ===================================================================
- Miscellaneous Notes
- ===================================================================
-
- * Compiling Pascal targets on the Mac
- Rebuld the Win32Headers, then rebuild the Pascal libraries. You
- must then places the libraries into the appropriate folders as
- noted in the "How To" file. This only applies to Mac builds -
- the Win32 builds on the x86 hosts are fine. We will make sure
- this is fixed in the final release of Pro4.
-
- * Compiling Win32 targets
-
- When building the ANSICx86.lib and ANSICx86D.lib with the
- MSL C.Win32.mcp or MSL C.PPC.MTrgt.mcp project linker warnings
- for previous defined symbols will be generated. These warnings
- are expected and can safely be ignored.
-
- MacOS only: The aforementioned linker warnings will appear as
- errors when using the Build MSL Libraries utility. Furthermore
- the build library process will halt until the error is
- acknowledged; these "errors" can be safely ignored.
-
- * Precompiled header stationary sets precompiled headers to 4i-8d.
- When using precompiled headers built from the stationary, please
- ensure that the libraries you include in your project are also
- 4i-8d. If changing the precompiled headers preferences panels,
- please ensure that you build the associated libraries you plan
- to use with the same options. A "#pragma check_header_flags"
- has been added to MSL.pch++ to help check for these types of
- errors.
-
- * Improved clock for Mac platforms
- To increase the tick count for the Mac platforms in order to use
- the facilities the Operating System provides, please change the
- following file:
- Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
- timesize.mac.h
- This file introduces a define (__TIMESIZE_DOUBLE) which enables
- the improved clock code in time.h and time.mac.c. Please note
- that the clock_t typedef will change from an unsigned long to a
- type double. This also means that the clock function will change
- types. Be sure you confirm in your code base that your return
- values are typed accordingly for clock and clock_t.
-
- * Multi-target project files. You will see new project files with
- the string MTrg included in the project name. This means that
- the project file can emit all targets from that single file,
- depending on your selection when you open the project file and
- choose a target. However, it takes more time to open the multi-
- target project files. This was done for the windows platforms
- because scripting is not available in the IDE on windows.
-
- * Console applications for windows projects now stop before exiting
- so that output can be viewed. This feature can be turned off by
- setting the preprocessor macro STOP_PROGRAM_BEFORE_EXIT in the
- windows prefix file, ansi_prefix.win32.h. Be sure to rebuild
- MSL C after making this change. Please note that if you redirect
- output to a serial device (such as a printer), you must still
- press enter to exit the program.
-
- * There is a vbscript script in the "Metrowerks Standard Library"
- directory that rebuilds the precompiled header files, the win32
- runtime, and all MSL libraries. Read the information at the top
- of the script file "msl_build.vbs" if you have problems running
- the script. The file "msl_list" in the same directory can be
- configured to build exactly those libraries you wish to build.
- If errors occur while building, they are logged in the file
- "error.log" in the "Metrowerks Standard Library" directory.
-
-
- ========================================================================
- Contacting Metrowerks
- ========================================================================
-
- For bug reports, technical questions, and suggestions, please use the
- forms in the Release Notes folder on the CD, and send them to
-
- support@metrowerks.com
-
- See the CodeWarrior on the Nets document in the Release Notes folder for
- more contact information, including a list of Internet newsgroups,
- online services, and patch and update sites.
-
- ========================================================================
-
- Metrowerks Corporation
-